檢查一串括號是否為合法括號,而合法括號的要件是要左括號等於右括號的數量,並且要兩兩成對,且相同類型的括號要配相同類型的括號(譬如大括號要配大括號)。如果是合法括號就回傳true,否則回傳false。
問題描述:
(
、)
、{
、}
、[
和 ]
的字符串,判斷這個字符串中的括號是否配對正確並且順序正確。有效的括號必須滿足:
思路分析:
(
、[
、{
),將其推入堆疊中。步驟分解:
class Solution {
public:
bool isValid(string s) {
stack<char> st; // 使用堆疊來匹配括號
// 遍歷字符串中的每個字符
for (char c : s) {
// 如果是左括號,推入堆疊
if (c == '(' || c == '{' || c == '[') {
st.push(c);
}
// 如果是右括號,進行匹配
else {
// 堆疊為空,或者堆疊頂部不匹配,直接返回false
if (st.empty()) return false;
char top = st.top();
if ((c == ')' && top == '(') ||
(c == ']' && top == '[') ||
(c == '}' && top == '{')) {
st.pop(); // 匹配成功,彈出堆疊頂部
} else {
return false; // 匹配失敗
}
}
}
// 最後檢查堆疊是否為空
return st.empty();
}
};